/***************************************************************************
 创建者：华磊
 开始时间：         : 2020.12.08
 copyright            : (C) 深圳市华友高科有限公司
 修改说明：（每次有修改就添加一条，带有 修改人，修改时间，修改描述）

 ***************************************************************************
 *   运动指令属性编辑视窗
*                                                                         *
 ***************************************************************************/
#ifndef MOTIONINSTRUCTION2VIEW_H
#define MOTIONINSTRUCTION2VIEW_H

#include <QWidget>

class MotionInstructionView;
class ProgramView;

namespace Ui {
class MotionInstruction2View;
}

/**
 * @brief The MotionInstruction2View class　运动指令属性编辑类
 */
class MotionInstruction2View : public QWidget
{
    Q_OBJECT

public:
    explicit MotionInstruction2View(int styleId,QWidget *parent = 0);
    ~MotionInstruction2View();

    /**
     * @brief updateView        更新设置数据到界面控件上
     */
    void updateView();
    /**
     * @brief getInput          获取界面输入数据
     */
    void getInput();

    void changeLanguage();

    void initialDisplayStyle(int styleId);

public:
    MotionInstructionView *motionInstructionView;
    ProgramView * programView;

signals:

    /**
     * @brief finishEditInstruction     完成指令编辑
     */
    void finishEditInstruction();
    /**
     * @brief saveInstruction           保存编辑的指令
     * @param motionInstruction         编辑后的指令
     */
    void saveInstruction(QString motionInstruction);

    /**
     * @brief selectDiInstruction       选择添加DI指令
     */
    void selectDiInstruction_signal(bool isUseDiIn);

    /**
     * @brief cleanNote                 清除注释
     */
    void cleanNote();

    /**
     * @brief selectWjntInstruction     选择添加Wjnt手腕关节动作指令
     */
    void selectWjntInstruction();
    /**
     * @brief selectIncInstruction      选择添加INC增量指令
     */
    void selectIncInstruction();
    /**
     * @brief selectAccInstruction      选择添加ACC加减速倍率指令
     */
    void selectAccInstruction();
    /**
     * @brief selectOffsetInstruction   选择添加Offset位置补偿指令
     */
    void selectOffsetInstruction();
    /**
     * @brief selectToolOffsetInstruction   选择添加Tool_Offset工具补偿指令
     */
    void selectToolOffsetInstruction();
    /**
     * @brief selectEvInstruction       选择添加EV外部轴指令
     */
    void selectEvInstruction();
    /**
     * @brief selectPthInstruction      选择添加PTH路径规划指令
     */
    void selectPthInstruction();

private slots:
    /**
     * @brief on_forward_Btn_clicked    上一页槽函数
     */
    void on_forward_Btn_clicked();

    /**
     * @brief on_save_Btn_clicked       保存编辑指令槽函数
     */
    void on_save_Btn_clicked();

    /**
     * @brief on_CNT_slider_sliderMoved 更改CNT滑块值槽函数
     * @param position                  当前滑块位置
     */
    void on_CNT_slider_sliderMoved(int position);


    /**
     * @brief on_clearNote_Btn_clicked  清除注释槽函数
     */
    void on_clearNote_Btn_clicked();

    /**
     * @brief on_Wjnt_checkBox_clicked  选择添加Wjnt手腕关节动作指令槽函数
     */
    void on_Wjnt_checkBox_clicked();

    /**
     * @brief on_INC_checkBox_clicked   选择添加INC增量指令槽函数
     */
    void on_INC_checkBox_clicked();

    /**
     * @brief on_ACC_checkBox_clicked   选择添加ACC加减速倍率指令槽函数
     */
    void on_ACC_checkBox_clicked();

    /**
     * @brief on_Offset_checkBox_clicked    选择添加Offset位置补偿指令槽函数
     */
    void on_Offset_checkBox_clicked();

    /**
     * @brief on_Tool_Offset_checkBox_clicked   选择添加Tool_Offset工具补偿指令槽函数
     */
    void on_Tool_Offset_checkBox_clicked();

    /**
     * @brief on_EV_checkBox_clicked    选择添加EV外部轴指令槽函数
     */
    void on_EV_checkBox_clicked();

    /**
     * @brief on_PTH_checkBox_clicked   选择添加PTH路径规划指令槽函数
     */
    void on_PTH_checkBox_clicked();

    /**
     * @brief on_ACC_slider_sliderMoved 更改ACC滑块位置槽函数
     * @param position　当前滑块位置
     */
    void on_ACC_slider_sliderMoved(int position);

    /**
     * @brief on_EV_slider_sliderMoved  更改EV滑块位置槽函数
     * @param position　当前滑块位置
     */
    void on_EV_slider_sliderMoved(int position);

    /**
     * @brief on_CNT_slider_valueChanged    CNT滑块值更改
     * @param value　CNT值
     */
    void on_CNT_slider_valueChanged(int value);

    /**
     * @brief on_ACC_slider_valueChanged    ACC滑块值更改
     * @param value　ACC值
     */
    void on_ACC_slider_valueChanged(int value);

    /**
     * @brief on_EV_slider_valueChanged     EV滑块值更改
     * @param value　EV值
     */
    void on_EV_slider_valueChanged(int value);

    void on_fixedType_comboBox_currentIndexChanged(int index);

    void on_DI_checkBox_clicked(bool checked);

private:
    Ui::MotionInstruction2View *ui;
};

#endif // MOTIONINSTRUCTION2VIEW_H
